perm filename SCHED[P,JRA]7 blob
sn#585756 filedate 1981-05-13 generic text, type C, neo UTF8
COMMENT ā VALID 00010 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 notes
C00005 00003
C00006 00004 EECS 129
C00011 00005 week 1: start the "where" (we're going)
C00014 00006 Part zero: interactive computing
C00018 00007 Part one: Functions as passive objects
C00025 00008 Part two: Functions as active objects
C00027 00009 Part 3: applications and implications
C00028 00010 EECS 129: The Art of Computer Science
C00036 ENDMK
Cā;
notes
art
music
architecture
rhetoric
linguistics
history
anthro
phil
bio
physics
math
cs
eng
phisiology: homer smith
take susman example in "constraints"
see zen pp 332
?quality in obj?
?quality in prog?
relate godel, einstein, jmc and time??
--------------------------------------------
"non-technical" considerations
Does "computing" represent a "new culture" in the sense of spengler?
is there any "sense" to spengler?
--------------------------------------------
lab stuff
disks
paper
manuals
projects
first day stuff:
name, major, what you expect from this course.
idea for project, if you have one.
--------------------------------------------
lisp:
an object-oriented language in which
objects have "first-class" standing.
an object is an abstraction whose identity
can be described such that one can
recognize the existence of an obj
how?
1. recognizer
2. constant
construct a new one, given the necessary components
how?
constructor
select its components
how?
1. atomic and has no components
2. composite and have selectors
interesting object in lisp:
function!!!!!
--------------------------------------------
relate 432
--------------------------------------------
auto:horse = x: computer ---what's "x"?
what is mathematics?
people to ask, chowning, fred, avron, bil lewis,
Navy
68k
steamer
model ii multi-bank
cai
intelligent systems
prime
automated drafting
data bases
ti
lisp machine
portable
real-time
national
16K
open
rolm
8086
office automation
tlc
applications
education (cf. logo/smalltalk)
ai (visicalc)
people:
2 senior-full
2 mid-half
----------------------
mapper-based memory
ti-based lm
EECS 129
class notes:
lisp notes: draft of book by JRA
interactive computing: paper by JRA
West Coast Computer Faire papers
journal papers: the ACM Turing lectures, in particular: Minsky, Scott-Rabin,
Iverson, Newell-Simon, Floyd, Perlis, Backus, McCarthy.
books: Zen and the art of motorcycle maintenance --Robert Pirsig
read it at least three times this term
Mindstorms -- Seymour Papert
what CAN be done with computing, if you try.
Godel, Escher, Bach -- Doug Hofstadter
an interesting view of mathematics, music, and art.
prelude to Godel's incompleteness results (much
better handled in LISP)
Jean Piaget -- Margaret Boden
particularly the last chapters (Piaget and X)
Anatomy of LISP -- John Allen
computer science from the LISP perspective
Functional Programming -- Peter Henderson
simplified version of LISP
The Gamesman(?) -- Michael Maccoby
interesting view of how modern corporations view themselves,
particularly the role of the "craftsman"
Decline of the West(?) -- Oswald Spengler
philosophy of history, relating the "life" of a culture in terms
of its view of mathematics.
Men of Mathematics --E T. Bell
good perspective on the mathematical world
History of Western Philosophy -- B. Russell
Russell's "unbiased" view of the philosophical world
General Systems Theory reference needed
Kamongo: The Lungfish and the Padre -- Homer Smith
a physiologist's "novel" about life and evolution
From Fish to Philosopher --Homer Smith
the kidney: from amoeba to Kant.
The Sufis --Idries Shah
another view of the world
Don Juan in Hell (act three of man and superman) --G B Shaw
GBS on life
Computer Power and Human Reason -- Joe Weizenbaum
sigh! some very good, some very BAD!
hysterical opportunism, in general.
software: mince: a display-based editor (Mince Is Not Complete Emacs)
logo: graphics-based sugar-coated functional language.
lisp: vanilla-flavored functional language.
visicalc: elegant constraint-based business package.
mu-math: symbolic mathematics package (micro-Macsyma)
zork: second generation Adventure--shows natural language input
and complex organization.
db lang: reasonable relational/ai-based db language --TBA
Each Friday we will summarize the week and integrate technical
aspects into the larger view of that makes these results relevant.
guest speakers:
* Smalltalk: Dr. Adele Goldberg, Learning Research Group, Xerox PARC
* Rubiks cube: Dr. Tom Davis, Stanford
Bernie Greenberg video tape of CubeSys--see March issue of
Scientific American
? Philosophy: Dr. Art Chandler, San Francisco State University
? The Pre-socratics: Dr. Lois Flynne, San Francisco State University
* Graphics/music: Scott Kim, Stanford University
* Zork: Dr.Bruce Daniels, Apple Computer
? Godel, Escher, Bach: Dr. Doug Hofstadter, Stanford University
* Theory: Dr. Vaughan Pratt, Stanford and MIT
? Music: Dr. John Chowning, Stanford University
geb: ***
? expert systems
? visicalc
? vlsi
week 1: start the "where" (we're going)
M overview; read zen
where
what
how
wow
T read mindstorms ch 1-2
TH discuss MS 1-2
F read MS 3
lab logo
week 2: start the "what" (is computation)
M discuss MS 3
start the computational ideas
use geb, and formal theory ideas
T
TH ms 4
F
lab: mince
logo
visicalc (?)
mu-math (?)
LISPs
week 3: start the "how" (it's done)
M how graphics ms 5-6
T
TH how lisp (computation) ms 7-*
F
lab: lisp
week 4: evaluation and computation
M
T
TH
F
lab: more lisp/logo
week 5: object-oriented programming
M
T
TH
F
lab:
week 6: applications and implications
M
T
TH
F
lab:
week 7: architecture and implementation
M
T
TH
F
lab:
week 8 - end: guest speakers:
* Smalltalk: Dr. Adele Goldberg, Learning Research Group, Xerox PARC
* Rubiks cube: Dr. Tom Davis, Stanford
Bernie Greenberg video tape of CubeSys--see March issue
of Scientific American
? Philosophy: Dr. Art Chandler, San Francisco State University
? The Pre-socratics: Dr. Lois Flynne, San Francisco State University
* Graphics/music: Scott Kim, Stanford University
* Zork: Dr.Bruce Daniels, Apple Computer
? Godel, Escher, Bach: Dr. Doug Hofstadter, Stanford University
* Theory: Dr. Vaughan Pratt, Stanford and MIT
? Music: Dr. John Chowning, Stanford University
geb: ***
? expert systems
? visicalc
? vlsi
Part zero: interactive computing
Peace of Mind: "Assembly of Japanese bicycle require [sic] great peace of mind"
Computing is the wrong word! --EXPRESSION?
compare: Automobile ??
---------- = ---
horseless carriage computer
low expectations, based on economics of last 20 years
graphics vs. keypunch
the unfortunate re-creation of 1965 on micros.
kids (of all ages)
LOGO, Smalltalk, PIE
Lisp as explainer
Lisp ā” object-oriented language
with all objects "1-st class"
(e.g. programs as objects)
Methodology vs. Style
interactive composition vs. programming
composition
creative rhetoric
the rationale
the tools: instrument-like (H Smith)
the effect: ego-less
weizenbaum's anti-hacker view
programming
what does programming represent?
ways of thinking (algorithmically)
read minsky's turing lecture
simulation of complex phenom.
can programmers be literate?
literacy=?
Notation
The role of notation in science
expressivity
subordination of detail
economy
amenability to proof
The impact of computing on notation
executability
representability of algorithms
The difficulties with programming languages
Computation and interaction
The relationship between language and its medium
why computing languages cannot be separated
from the programming env
cf. conversation and understanding
The polarization between interaction and discipline
pascal vs. lisp vs. smalltalk
The polarization between rigor and interaction
where does the discipline lie?
Basic vs. lisp
Part one: Functions as passive objects
The language
Data domain: The whole numbers
Algorithmic notation
conditional expressions
definitions
recursion
numerical examples
computation as deduction
axioms for number theroy
rules of inference
substitution and simplification
number theory
conditional
the concept of proof
equivalence
termination
computation as controlled deduction
substitution before: cbn
simplification before: cbv
actually substitutivity of =
indistinguishibility of = objs.
truth, computation, and deduction
what is truth?
truth versus deduction
incompleteness results
the appropriate language
elementary number theory
something better
Data domains: abstract objects
constructors, selectors, and recognizers
Data Domain: graphics
LOGO and Turtle geometry
abstraction and representation:
finite sets finite sequences
sets build functions sequences build computation
Data Domain: symbolic expressions
the representability of programs
The mapping of expressions to data structures
Non-numeric computation: examples
evaluation of polynomials
simplification of algebraic expressions
turtle geometry
Evaluation
Deduction vs computation, again
systems for substitution and simplification
simulation of substitution
symbol tables as objects
computation as controlled deduction again
call-by-name vs. call-by-value
Semantics of programming languages
axiomatic
operational
model-theoretic
Representability of programs
a detailed discussion
An evaluation algorithm
The operational view
Implementation strategies
call-by-value
weak vs. strong conditional
simulation of substitution
extending the evaluator
; macros and read-macros: abbreviational convenience
; iteration: language extension and special forms
A modern LISP: more data structuring
The idea of "first-class data"
implementation-driven languages violate notational principles
abstract object: their representation
arbitrary precision numbers
Strings
Arrays
; property-lists (flex records)
; modules/labels: organizational
Property-lists and message passing
classes as properties
algorithms as message passing
hierarchies and flavors
hierarchies as implementation simplification
Object-oriented programming
Smalltalk and Actors
frames and flavors
Computer Science Issues
Lexical vs dynamic scoping: the beginnings of active functions
Evaluation revisited
functionals
the difficulty with functional arguments
variables: local, free, global
added complexity of functional values
Control: function vs algorithm
an analysis of the evaluator
the run-time structure
stacks
stacks+access and control links
tree access, control stack
tree access, tree control
control as data: reflective/introspective systems
Applicative v.s. imperative
control as a programming tool
side-effects
assignment, rplaca, rplacd
Implementation considerations
implementation of the evaluation process
read
parsers and scanners
searching and hashing
print
runtime language support
i-j pairs
shallow versus deep
run-time data support
numbers
arbitrary precision numbers
trees
programmer maintained
reference counting
garbage collection
mark sweep
copy-compacting
cheney
baker
lieberman&hewitt
High-levl Machines and translators
The LISP machine
Traditional machines as microcode
Object-oriented architectures
Smalltalk
Intel 432
Compilation
program representation
list structure
scheme hacks
p-code/byte code/MACRO
machine specific
Hardware
LISP machine
Scheme chips
Part two: Functions as active objects
1 Functions as first-class objects
Relationship between
purity:lexical scoping
utility: dynamic scoping
interactive creation of functional objects
programming in "levels": modules
2 Applications of functional objects
message passing, Smalltalk classes, and LOGO turtles
how they work
car,cdr, cons as:
1. arrays and functional
2. pure functional (t, f)
3. 1 as msg passing
3 stacks as functionals
4 multiprocessing as functional operations
5 Evaluation of Functionals
evaluators for full funarg
evaluators for smalltalk (ingalls)
Part 3: applications and implications
6 Applications of lisp and object-oriented computing
Computer Aided Design
Natural Language
business data bases
7 The future of computing
interactive programming
language designs
theory
AI applications
EECS 129: The Art of Computer Science
This course is a challenge. I plan to challenge your conception of what
computing is about, to challenge the traditional view of the purpose of programming
languages, to challenge the usual conception of how one does programming, to
challenge the traditional curriculum of computing, and in general to challenge
your minds.
The course is neither mathematics nor engineering; it draws from both
disciplines, as does all of computer science. The intent of the course is to
investigate the phenomena called computing at a level of abstraction that will
allow us to explicate fundamental principles that underlie computing theory and
practice.
The texts for this course are "Zen and the Art of Motorcycle Maintenance", and
"Mindstorms: Computers, Children, and Powerful Ideas". Class notes will form
the main structure of the technical and "meta-computational" perspective that
supports the inquiry. "Zen" has valuable insights in the relationships between
art and science, besides the appropriate "tone" for this course. "Mindstorms"
is good fun: an exemplary book showing how one can present complex ideas in an
intuitive, yet faithful, setting.
A lab session is associated with this course. Since part of our exploration
involves computing, it is a requirement that one understands the art of
computing --often called "programming". Learning to program is like learning to
drive --both can profit from classroom work that explains basic concepts.
However both require "hands-on" experience before one really gets "the feel" of
the instrument. As with driving school, we should supply the students with the
best available vehicles and guide them in the process of applying the theory.
There are two important practical lessons in the programming experience: first
to develop an appreciation for abstraction and abstract programming, and second
to develop an understanding of how interactive programming differs from the
traditional "batch" (or modified "batch")-processing view. Abstract
object-oriented programming carried out in an interactive programming
environment is the future of applied computing.
The course will be a self-contained "mind-stretcher": no prerequsites other
than a healthy intellectual curiousity and the self-discipline to think.
However, the work will be demanding, so it is suggested that you have at least a
3.0 G.P.A. in your major.
WHAT I EXPECT: A lot! Though the course will be self-contained, I will not
"spoon-feed" you. You will be expected to delve into areas other than your
major course of study: mathematics, philosophy, education, art, and history are
all fair game. Hopefully, there will be a sufficiently diverse background in
this class that knowledge can be pooled. If not, you (and I) will have to dig.
If you have questions, understand where you lost track; simply saying "I don't
get it" is not satisfactory.
COURSE WORK: Show up every day! Do not get behind! By the end of the fourth
week, have a project outline ready to turn in and discuss with me in a 15 minute
interview.
Possible areas for topics: history, philosophy, education, mathematical theory
of computation, language design, machine architecture, language implementation,
applications (graphics, art, artificial intelligence).
COURSE GRADING: Difficult! Some programming, some "fact extraction", some
essays. Style and quality will count in all these efforts.
Programming = 10%
Midterm = 30%
Project = 30%
Final = 30%
GENERAL DISCLAIMER If you are one of those students who feels that the only
grade is an "A" and will drop if your GPA is threatened, then this course is not
for you. For you "late dropper"s: be considerate and drop early. Don't waste
your time or hold a slot in this class that someone else might use. Who knows,
I might not sign drop slips!?!
COURSE READING: There is a list of required and suggested books for this class.
***NO WRITING IN THE LIBRARY BOOKS, DAMN IT*** Some illiterate slob destroyed
the library copy of "Don Juan in Hell".
COURSE LAB: This area requires the most cooperation from everyone.
Resources are very limited, though there's reason to believe that things will
improve. All resources --machines, documentation, and disks-- are at a premium;
most things are borrowed, so be particularly careful.